package com.naiterui.ehp.bs.doctor.dao;

import com.naiterui.ehp.bp.domain.PatientGroup;

import java.util.List;
import java.util.Set;

public interface IPatientGroupDao {

    void save(PatientGroup patientGroup);

    PatientGroup get(Long id);

    void saveOrUpdate(PatientGroup patientGroup);

    void removeById(Long id);

    /**
     * 
     * <根据医生ID获取患者分组列表>
     * 
     * @param doctorId
     * @return List<PatientGroup> <患者分组列表>
     * @Throws 异常信息
     * @History 2015-6-18 下午1:36:37 by guoyongxiang
     */
    List<PatientGroup> getPatientGroupList(Long doctorId);
    
    /**
     * <根据医生id查询是否已存在该名称医生分组>
     *
     * @param doctorId
     * @param groupName
     * @param groupId
     * @return boolean <返回值描述>
     * @Throws 异常信息
     * @History 2015年7月25日 下午1:33:16 by chenlin
     */
    boolean findExistNameByDoctorId(Long doctorId, String groupName, Long groupId);

    /**
     * 批量查询患者分组名称
     * @Author YongYang
     * @Date 2017年3月2日
     * @since 1.0.0
     * @return
     */
    List<String> findPatientGroupNameList(String groupIds);

    /**
     * 查询患者所在分组的列表
     * @Description
     * @param doctorId 医生id
     * @param patientId 患者id
     * @return
     * @History 2017年6月11日 by wangchuan
     */
    List<PatientGroup> getGroupListByPatient(Long doctorId, Long patientId);

    /**
     * 根据分组id，查询分组数量
     * @Description 用于判断所有的分组是否都存在
     * @param groupIds
     * @return
     * @History 2017年6月13日 by wangchuan
     */
    long getGroupsCount(Set<Long> groupIds);

}